<?php

class ViewImprimirFactura extends TPage {
//<editor-fold defaultstate="collapsed" desc="Verifica Usuario Logueado">
  /**
   * determina si el usuario esta logueado en el sistema
   * @author VSR, 01/01/2011
   */
  private function usuarioLogueado(){
    $estaLogueado = false;
    try {
      $session = new THttpSession;
      $session->open();
      $oUsuario = $session[Usuario::NOMBRE_ENTIDAD];
      if(isset($oUsuario)){
        $estaLogueado = true;
      }
    } catch (Exception $e) {
      $estaLogueado = false;
    }
    return $estaLogueado;
  }

  /**
   * redirecciona al login
   * @author VSR, 01/01/2011
   */
  private function redireccionarLogin(){
    $this->Response->redirect($this->Service->constructUrl("FrmLoginWf"));
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  //funciones pagina
  const FUNCION_VER = "Ver";
  //indices arreglo
  const ARRAY_DETALLE = 0;

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 01/01/2011
   */
  private function obtenerDatos($idFlujo){
    try {
      $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      $idUsuario = $oUsuarioWf->getId();
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = WfPlantillaFactura::obtenerDetalle($idFlujo, WfPlantillaFactura::NOMBRE_ENTIDAD_ARCHIVO, $idUsuario);
      Utilidades::grabarSessionPorNombre(self::SESION_DATOS.$nombrePagina, $arr);
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 01/01/2011
   */
  private function actualizaInterfaz(){
    $totalRegistros = 0;
    $sb = new StringBuilder();
    
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS.$nombrePagina);

      $idArchivo = "0";
      $strNombreArchivo = "";
      $strNombre = "";
      $idFlujo = $this->Request["id"];

      if (!is_null($arr)) {
        $totalRegistros = count($arr);
        if ($totalRegistros > 0) {
          $row = $arr[0];
          $strNombre = $row["NombreFlujo"];
          $idArchivo = $row["IdArchivo"];
          $strNombreArchivo = $row["NombreArchivo"];
        }
      }
    } catch (Exception $e) {
      $idArchivo = "0";
      $strNombreArchivo = "";
      $strNombre = "";
    }

    $this->lblTituloFormulario->Text = $strNombre;
    $this->wucHistorialAprobaciones->cargarDatos($idFlujo);

    //construye ruta del archivo en el repositorio
    if($idArchivo != "0") {
      $entidad = WfPlantillaFactura::NOMBRE_ENTIDAD_ARCHIVO;
      $rutaImagen = Archivo::RUTA_REPOSITORIO."/$entidad/reg$idFlujo/$idArchivo/$strNombreArchivo";
      $this->lblImagen->Text = "<img src=\"$rutaImagen\" alt=\"\" />";

      //$sb->appendLine("ejecutarImprimir();");
      //$this->Page->ClientScript->registerEndScript("actualizaInterfaz", $sb->toString());
    }

  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControles($isPostBack){
    try {
      //inicializa los controles del Correlativo y Locales
      $this->inicializaControlesEventoWindowOnLoad($isPostBack);

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa los controles al cargar la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControlesEventoWindowOnLoad($isPostBack) {
    $nombrePagina = $this->obtenerNombrePagina();
    $sb = new StringBuilder();

    //se deja estructura por si se utiliza en algun momento
    //$sb->appendLine("-- codigo --");
    //$this->Page->ClientScript->registerEndScript("windowOnLoad", $sb->toString());
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    //verifica los permisos para los controles
    $this->pnlContenido->Visible = true; //Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);

    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

  /**
   * obtiene nombre de la pagina actual
   * @return <type>
   * @author VSR, 01/01/2011
   */
  private function obtenerNombrePagina(){
    $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
    return $nombrePagina;
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    //si no esta conectado entonces lo redirecciona al login
    if(!$this->usuarioLogueado()){
      $this->redireccionarLogin();
    }
    $idFlujo = $this->Request["id"];
    $nombrePagina = $this->obtenerNombrePagina();
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;

    if(!$this->IsPostBack) {
      $this->obtenerDatos($idFlujo);
      $this->inicializaControles($this->IsPostBack);
      $this->actualizaInterfaz();
    }

  }

//</editor-fold>


}
?>
